// 全局语言切换状态管理
import { ref, provide, inject } from 'vue'
import messages from './i18n.js'

// 创建语言状态
const currentLang = ref('zh') // 默认使用中文

// 语言切换函数
export const useLanguage = () => {
  // 切换语言
  const changeLanguage = (lang) => {
    currentLang.value = lang
  }

  // 获取当前语言的消息
  const t = (path) => {
    if (!path) return ''
    
    const keys = path.split('.')
    let result = messages[currentLang.value]
    
    for (const key of keys) {
      if (!result || typeof result !== 'object') {
        return path // 如果找不到对应翻译，返回原路径
      }
      result = result[key]
    }
    
    return typeof result === 'string' ? result : path
  }

  return {
    currentLang,
    changeLanguage,
    t
  }
}

// 创建全局注入键
const LANGUAGE_KEY = Symbol('language')

// 提供者函数，在根组件中使用
export const provideLanguage = () => {
  provide(LANGUAGE_KEY, useLanguage())
}

// 消费者函数，在子组件中使用
export const injectLanguage = () => {
  const language = inject(LANGUAGE_KEY)
  if (!language) {
    throw new Error('injectLanguage must be used after provideLanguage')
  }
  return language
}